/*
 * IPostgresqlResult.cpp
 *
 *  Created on: 05.06.2012
 *      Author: Caffeine
 */
#ifdef _COMPILE_WITH_DB_POSTGRES_
#include "IPostgresqlResult.h"

namespace irr {
namespace db {
namespace postgresql {

IPostgresqlResult::IPostgresqlResult(){
	setResult(0);
}
IPostgresqlResult::IPostgresqlResult(PGresult*res){
	setResult(res);
}
void IPostgresqlResult::setResult(PGresult*res){
	resurses=res;
	pos_col=0;
	pos_row=0;
}
IPostgresqlResult::~IPostgresqlResult(){
	if (resurses)
		PQclear(resurses);
}

irr::u32 IPostgresqlResult::getRowCount(){
	return PQntuples(resurses);
}

irr::u32 IPostgresqlResult::getColCount(){
	return PQnfields(resurses);
}

irr::core::stringc IPostgresqlResult::getColName(irr::u32 index){
	return PQfname(resurses,index);
}

bool IPostgresqlResult::nextCol(){
	if (pos_col+1>=getColCount()){
		return false;
	}
	pos_col++;
	return true;
}

bool IPostgresqlResult::nextRow(){
	if (pos_row+1>=getRowCount()){
		return false;
	}
	pos_col=0;
	pos_row++;
	return true;
}

irr::u32 IPostgresqlResult::getColPosition(){
	return pos_col;
}

irr::u32 IPostgresqlResult::getRowPosition(){
	return pos_row;
}

irr::core::stringc IPostgresqlResult::getValue(){
	return PQgetvalue(resurses,pos_row,pos_col);
}

} /* namespace postgresql */
} /* namespace db */
} /* namespace irr */

#endif
